package 数组系列;

import java.util.Arrays;

public class Squares_of_a_sorted_array {
    //方法一，暴力算法
//    public int[] sortedSquares(int[] nums) {
//        int n = nums.length;
//        for(int i = 0; i < n; i++){
//            nums[i] *= nums[i];
//        }
//        Arrays.sort(nums);
//        return nums;
//    }
    //方法二，双指针算法
    public int[] sortedSquares(int[] nums) {
        int n = nums.length;
        int [] result = new int[n]; //存放结果
        int left = 0, right = n - 1;
        int index = n - 1;  //结果的指针
        while(left<=right){ //left>right则循环结束
            if(Math.pow(nums[left],2)>Math.pow(nums[right],2)){ //如果左边最大的数大于右边最大的
                result[index--] = (int) Math.pow(nums[left],2); //结果存左边的数
                left++;     //左边的指针前进一位
            }
            else{
                result[index--] = (int) Math.pow(nums[right],2); //如果右边最大的数大于左边最大的 ，结果存右边的数
                right--;    //右边的指针前进一位
            }
        }
        return result;
    }
}
